package com.bcbim.model_server_interface.component.service;

import com.bcbim.model_server_interface.component.bo.ComponentMaterialBO;
import com.bcbim.model_server_interface.component.bo.ComponentTreeBO;
import com.bcbim.model_server_interface.component.dto.CategoryComponentDTO;
import com.bcbim.model_server_interface.component.dto.ComponentMaterialDTO;
import com.bcbim.model_server_interface.component.vo.*;

import java.util.List;

/**
 * @Description: 构件接口
 * @Author: ye
 * @Date: 2022/4/12
 * @Version: V1.0
 **/
public interface ComponentService {
    /**
     * @Description: 查询构件id
     * @Param: ComponentMaterialDTO
     * @Return: ComponentMaterialBO
     * @Author: ye
     * @Date: 2022/4/12
     */
    ComponentMaterialBO getComponentId(ComponentMaterialDTO query);

    /**
     * @Description: 根据构件id查询材质索引
     * @Param: componentId
     * @Return: List<MaterialIndexVO>
     * @Author: ye
     * @Date: 2022/4/12
     */
    List<MaterialIndexVO> getComponentMashById(String componentId);

    /**
     * @Description: 查询文件的组件树
     * @Param: fileId
     * @Return: List<ComponentTreeBO>
     * @Author: ye
     * @Date: 2022/3/30
     */
    List<ComponentTreeBO> getComponentTree(String fileId);

    /**
     * @Description: 查询构件树的组件
     * @Param: fileId
     * @Return: List<ComponentTreeBO>
     * @Author: ye
     * @Date: 2022/3/30
     */
    List<ComponentTreeBO> getComponentTreeComponent(String fileId);

    /**
     * @Description: 根据id 查询构件信息
     * @Param: componentId
     * @Return: ComponentMaterialBO
     * @Author: ye
     * @Date: 2022/4/12
     */
    ComponentMaterialBO getComponentInfo(String componentIds);

    /**
     * @Description: 根据类别查询构件
     * @Param: CategoryComponentDTO
     * @Return: List<ComponentInfoVO>
     * @Author: ye
     * @Date: 2022/4/29
     */
    List<ComponentInfoVO> getComponentByCategory(CategoryComponentDTO query);

    /**
     * @Description: 查询所有的构件中点
     * @Param: String[]
     * @Return: List<ComponentCenterVO>
     * @Author: ye
     * @Date: 2022/5/13
     */
    List<ComponentCenterVO> getComponentCenter(String[] arrFileId);

    /**
     * @Description: 批量查询构件信息
     * @Param: componentIds
     * @Return: List<ComponentVO>
     * @Author: ye
     * @Date: 2022/6/2
     */
    List<ComponentVO> getArrComponentsById(String[] componentIds);

    /**
     * @Description: 批量查询构件mesh
     * @Param: componentIds
     * @Return: List<MaterialIndexVO>
     * @Author: ye
     * @Date: 2022/6/2
     */
    List<MaterialIndexVO> getArrComponentMashById(String[] componentIds);

    /**
     * @Description: 获取楼层所有构件id
     * @Param: floorId
     * @Return: List<String>
     * @Author: ye
     * @Date: 2022/6/8
     */
    List<String> getFloorComponentId(String floorId);

}
